A virtual machine monitor (VMM) provides a virtual processing environment, in which multiple operating systems can be carried out simultaneously on the same computer hardware platform. A virtual machine monitor (VMM) carried out on a computer system presents to other software making use of the virtual processing environment an hardware abstraction in the form of one or more virtual machines (VMs). That is, a virtual machine monitor (VMM) is software that is aware of virtualization processor/platform architecture and implements policies to virtualize and manage access to hardware resources shared among the other software. Virtualization refers to technology to share or replicate hardware resources among multiple instances of virtual machines (VMs) or any other guest software. Sharing or replication of the hardware resources must be transparent to the guest software. Hence, virtualization creates the illusion to the guest software to be carried out on a dedicate computer hardware platform such that guest software expects to own hardware resources.
A virtual machine (VM) or guest is a processing environment that makes use of the virtualized resources created by the virtual machine monitor (VMM). The guest may function as a self-contained platform, running its own operating system (i.e., a guest operating system (OS)) and other software. Software making use of the virtual processing environment created by the virtual machine monitor (VMM) will be referred to as guest or guest software. The guest software is said to be hosted by the virtual machine monitor (VMM) and to be running on virtualized resources. The guest software expects to operate as if it were running on a dedicated computer rather than a virtual machine. The virtual machine monitor (VMM) is transparent to the guest software. Hence, the guest software cannot determine whether a virtual machine monitor (VMM) provides a hardware abstraction layer or whether the hardware resources are provided by a dedicated computer hardware platform. Accordingly, the guest software expects to control various events and to have access to hardware resources, such as processor-resident resources (e.g., control registers), resources that reside in memory (e.g., various tables) and resources that reside on the underlying hardware platform (e.g., input/output (I/O) devices).
Virtual machine technology has been developed to allow multiple instances of operating systems (guest OS's) to be carried out on a single computer system by virtualizing the hardware resources including processors, memory and I/O devices. One of the key virtualization issues for a virtual machine monitor (VMM) is how to virtualize the memory and the processor's memory management unit (MMU) resources, including a translation lookaside buffer (TLB) and hardware walker resources for each guest software execution environment.
This is especially so, as the virtual machine monitor (VMM) may need to create and carry out multiple guest OS execution environments simultaneously and may need to create a similar platform memory address layout for each guest software execution environment. In another example, the virtual machine monitor (VMM) may create the illusion of a larger amount of physical memory space to a guest OS execution environment than the actual amount of main memory available on the hardware platform. The virtual machine monitor (VMM) also needs to prevent direct guest access to physical memory for security reasons and should also prevent one guest from accessing physical memory belonging to a different guest.
To meet the above requirements of creating virtualized physical memory mappings for a guest OS execution environment, the virtual machine monitor (VMM) needs to implement an extra layer of address conversion logic that translates from a guest physical address to a physical address when a virtual address is translated to a guest physical address through a translation lookaside buffer (TLB). This is called “MMU (TLB) virtualization”. However, the conversion logic requires complex software, is cumbersome and is incompatible with off-the-shelf software, such as shrink-wrap operating systems.
A need thus exists to improve execution of guest software in a virtual machine environment.